#pragma once

#include "DLTerm.hpp"
#include "DLRoleOperator.hpp"

namespace terms {
	namespace dl {
		template <typename L=std::string, typename I=std::string, typename C=std::string, typename R=std::string>
		class DLCardinalityRestriction
			: public virtual DLRoleOperator<L, I, C, R>
		{
		private:
			unsigned _cardinality;

		public:
			DLCardinalityRestriction(const Role &role, const unsigned cardinality)
				: DLRoleOperator<L, I, C, R>(role), _cardinality(cardinality)
			{
			}

		public:
			const unsigned
			get_cardinality() const
			{
				return _cardinality;
			}
		};
	}
}
